package org.zergle.utils;

/**
 * 用于获取与 Java 平台相关信息的实用类
 * 
 * @author Johnson.Lee
 * 
 */
public class Platform {

	private Platform() {
	}

	/**
	 * 判断操作系统是否为Windows操作系统
	 * 
	 * @return 如果系统是Windows操作系统则返回true， 否则返回false
	 */
	public static boolean isWindows() {
		return getOSName().matches(".*(?i)Windows.*");
	}

	/**
	 * 判断操作系统是否为Unix操作系统
	 * 
	 * @return 如果系统是Unix操作系统则返回true， 否则返回false
	 */
	public static boolean isUnix() {
		return getOSName().matches(".*(?i)Unix.*");
	}

	/**
	 * 判断操作系统是否为Linux操作系统
	 * 
	 * @return 如果系统是Linux操作系统则返回true， 否则返回false
	 */
	public static boolean isLinux() {
		return getOSName().matches(".*(?i)Linux.*");
	}

	/**
	 * 判断操作系统是否为Mac操作系统
	 * 
	 * @return 如果系统是Mac操作系统则返回true， 否则返回false
	 */
	public static boolean isMac() {
		return getOSName().matches(".*(?i)Mac.*");
	}

	/**
	 * 返回操作系统的名称
	 * 
	 * @return 操作系统的名称
	 */
	public static String getOSName() {
		return System.getProperty("os.name");
	}

	/**
	 * 返回操作系统的版本
	 * 
	 * @return 操作系统的版本
	 */
	public static String getOSVersion() {
		return System.getProperty("os.version");
	}

	/**
	 * 返回当前用户程序所在目录
	 * 
	 * @return 当前用户程序所在目录
	 */
	public static String getUserDir() {
		return System.getProperty("user.dir");
	}

	/**
	 * 返回当前用户主目录
	 * 
	 * @return 当前用户主目录
	 */
	public static String getUserHome() {
		return System.getProperty("user.home");
	}

	/**
	 * 返回当前用户名
	 * 
	 * @return 当前用户名
	 */
	public static String getUserName() {
		return System.getProperty("user.name");
	}

	/**
	 * 返回Java运行时环境的安装目录
	 * 
	 * @return Java运行时环境的安装目录
	 */
	public static String getJavaHome() {
		return System.getProperty("java.home");
	}

	/**
	 * 返回操作系统默认的文件编码字符集
	 * 
	 * @return 操作系统默认的文件编码字符集
	 */
	public static String getFileEncoding() {
		return System.getProperty("file.encoding");
	}

	/**
	 * 返回JDK的扩展目录
	 * 
	 * @return JDK的扩展目录
	 */
	public static String getExtDirs() {
		return System.getProperty("java.ext.dirs");
	}

}
